package user.post;

import exceptions.comment.InvalidMedia;

/**
 * Essa interface modela os medias do pacote post. Ela garante que os metodos
 * necessarios para a total manipulacacao deles por outras classes.
 * 
 * @author Heitor Meira
 * 
 */
public interface Media{
	/**
	 * Fornece a identificacao do {@code Media}.
	 * @return A identificacao do {@code Media}.
	 */
	String getId();
	
	/**
	 * Fornece a descricao do {@code Media}.
	 * @return A descricao do {@code Media}.
	 */
	String getDescription();
	
	/**
	 * Atualiza a descricao do {@code Media}.
	 * @param description A nova descricao do {@code Media}.
	 */
	void setDescription(String description);
	
	/**
	 * Atualiza os dados do {@code Media}.
	 * @param data Os novos dados do {@code Media}.
	 * @throws InvalidMedia Se os dados nao estiverem corretamente formatados.
	 */
	void setData(String data) throws InvalidMedia;
	
	/**
	 * Fornece os dados armazenados pelo {@code Media}.
	 * @return Os dados desse {@code Media}.
	 */
	String getData();
}
